Emacs works with several window systems, most notably the X Window System. Both Emacs and X use the term “window”, but use it differently. An Emacs frame is a single window as far as X is concerned; the individual Emacs windows are not known to X at all.
This terminal-local variable tells Lisp programs what window system Emacs is using for displaying the frame. The possible values are
xEmacs is displaying the frame using X.
w32Emacs is displaying the frame using native MS-Windows GUI.
nsEmacs is displaying the frame using the Nextstep interface (used on GNUstep and Mac OS X).
pcEmacs is displaying the frame using MS-DOS direct screen writes.
nilEmacs is displaying the frame on a character-based terminal.
This variable holds the value of
window-system used for the first frame created
by Emacs during startup. (When Emacs is invoked with the
--daemon option, it does not create any initial
frames, so initial-window-system is
nil, except on MS-Windows, where it is still
w32. See
daemon in The GNU Emacs Manual.)
This function returns a symbol whose name tells what
window system is used for displaying frame (which
defaults to the currently selected frame). The list of
possible symbols it returns is the same one documented for
the variable window-system above.
Do not use window-system and
initial-window-system as predicates or boolean flag
variables, if you want to write code that works differently on
text terminals and graphic displays. That is because
window-system is not a good indicator of Emacs
capabilities on a given display type. Instead, use
display-graphic-p or any of the other
display-*-p predicates described in Display
Feature Testing.